﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Windows.Forms;
using System.Diagnostics;

namespace Arthus
{
    class Region
    {
        MySqlConnection konekcija;
        MySqlCommand komanda = new MySqlCommand();
        MySqlDataReader datareader = null;
        MySqlDataAdapter adapter = null;
        DataTable dataTable = null;
        DataSet dataSet = null;

        Region regionObjekat = null;

        public String VratiOznakuRegionaNaOsnovuID(int idRegiona)
        {
            String rezultat = "";
            if (idRegiona != 0)
            {
                try
                {
                    //rezultat ako je idRegiona razlicit od nule
                    //konekcija sa bazom i punjenje dataset-a
                    konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                    konekcija.Open();
                    komanda.Connection = konekcija;
                    komanda.CommandText = "SELECT regionozn FROM regioni WHERE regionid=" + idRegiona;
                    datareader = komanda.ExecuteReader();
                    while (datareader.Read())
                    {
                        rezultat = datareader.GetValue(0).ToString();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                }
                finally
                {
                    datareader.Close();
                    konekcija.Close();
                }
            }
            else
            {
                //rezultat ako nije idRegiona razlicit od nule
                rezultat = "";
            }
            return rezultat;
        }

        public int VratiIDRegionaNaOsnovuOznake(String oznaka)
        {
            int rezultat = 0;
            if (oznaka.Length>0)
            {
                try
                {
                    //rezultat ako je idRegiona razlicit od nule
                    //konekcija sa bazom i punjenje dataset-a
                    konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                    konekcija.Open();
                    komanda.Connection = konekcija;
                    komanda.CommandText = "SELECT regionid FROM regioni WHERE regionozn='"+oznaka+"'";
                    datareader = komanda.ExecuteReader();
                    while (datareader.Read())
                    {
                        rezultat = Convert.ToInt32(datareader.GetValue(0).ToString());
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                }
                finally
                {
                    datareader.Close();
                    konekcija.Close();
                }
            }
            else
            {
                //rezultat ako nije idRegiona razlicit od nule
                rezultat = 0;
            }
            return rezultat;
        }

        public void PopuniComboBox(ComboBox combo) {
            try
            {
                //konekcija sa bazom i punjenje dataset-a
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                komanda.Connection = konekcija;
                komanda.CommandText = "SELECT REGIONOZN FROM REGIONI;";
                dataTable = new DataTable();
                adapter = new MySqlDataAdapter();
                adapter.SelectCommand = komanda;
                adapter.Fill(dataTable);

                adapter.Dispose();
                konekcija.Close();

                for (int i = 0; i < dataTable.Rows.Count; i++)
                {
                    combo.Items.Add(dataTable.Rows[i][0]);
                }
                combo.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                dataTable.Dispose();
                adapter.Dispose();
                konekcija.Close();
            }
        }

        public void PopuniListBox(ListBox lb)
        {
            lb.Items.Clear();
            try
            {
                //konekcija sa bazom i punjenje dataset-a
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                komanda.Connection = konekcija;
                komanda.CommandText = "SELECT REGIONID, REGIONOZN FROM REGIONI;";
                dataTable = new DataTable();
                adapter = new MySqlDataAdapter();
                adapter.SelectCommand = komanda;
                adapter.Fill(dataTable);

                adapter.Dispose();
                konekcija.Close();

                for (int i = 0; i < dataTable.Rows.Count; i++)
                {
                    lb.Items.Add(dataTable.Rows[i][0] + ". " + dataTable.Rows[i][1]);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                dataTable.Dispose();
                adapter.Dispose();
                konekcija.Close();
            }
        }

        public void PopuniKontroleNaOsnovuIdRegiona(int idRegiona, TextBox oznaka, TextBox naziv, TextBox opis)
        {
            try
            {
                Posjed tobj = new Posjed();
                Preduzece predObj = new Preduzece();
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT REGIONOZN, REGIONNAZ, REGIONOPI FROM REGIONI WHERE REGIONID=" + idRegiona + ";";
                datareader = komanda.ExecuteReader();
                while (datareader.Read())
                {
                    oznaka.Text = datareader.GetValue(0).ToString();
                    naziv.Text = datareader.GetValue(1).ToString();
                    opis.Text = datareader.GetValue(2).ToString();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
        }

        public int VratiPovecanID()
        {
            int rezultat = 0;
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT MAX(REGIONID) FROM REGIONI;";
                datareader = komanda.ExecuteReader();
                datareader.Read();
                rezultat = Convert.ToInt32(datareader.GetValue(0));
                rezultat++;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        }

        public void DodajRegion(TextBox oznaka, TextBox naziv, TextBox opis)
        {
            try
            {
                regionObjekat = new Region();
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = string.Format("INSERT INTO `regioni`(`REGIONID`, `REGIONOZN`, `REGIONOZX`, `REGIONNAZ`, `REGIONOPI`) VALUES ("
                    +regionObjekat.VratiPovecanID()+",'"+oznaka.Text+"','"+Razno.IzbrisiPojedineKaraktereIzStringa(oznaka.Text.Trim().ToUpper())+"','"
                    +naziv.Text+"','"+opis.Text+"')");
                int response = komanda.ExecuteNonQuery();
                MessageBox.Show("Uspešno dodat nov region!");
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Već postoji region sa takvom oznakom!");
            }
            catch (FormatException ex)
            {
                MessageBox.Show("Greška u formatu unosa! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }

        public void IzmeniRegion(int idRegiona, TextBox oznaka, TextBox naziv, TextBox opis)
        {
            try
            {
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = @"UPDATE `regioni` SET `REGIONOZN`='"+oznaka.Text+"',`REGIONOZX`='"
                    +Razno.IzbrisiPojedineKaraktereIzStringa(oznaka.Text.Trim().ToUpper())+"',`REGIONNAZ`='"+naziv.Text+"',`REGIONOPI`='"+opis.Text+"' WHERE REGIONID="
                    +idRegiona+"";
                int response = komanda.ExecuteNonQuery();
                MessageBox.Show("Uspešno izmenjen region!");
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Već postoji region sa takvom oznakom!");
            }
            catch (FormatException ex)
            {
                MessageBox.Show("Greška u formatu unosa! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }

        public void ObrisiRegion(int idRegiona)
        {
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "DELETE FROM `regioni` WHERE REGIONID=" + idRegiona + ";";
                komanda.ExecuteNonQuery();
                MessageBox.Show("Uspešno obrisan region!");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }
    }
}
